<template>
  <div id="app">
    <div class="container">
      <div class="close"><span class="iconfont iconicon-test"></span></div>
      <div class="logo"><span class="iconfont iconnew"></span></div>
      <div class="inputs">
        <myinput
          v-model="user.username"
          placeholder="请输入用户名/手机号"
          :rules="/^1\d{4}$|^1[35789]\d{9}$/"
          msg="请输入5位或者11位的手机号"
        >
        </myinput>
        <myinput
          class="input"
          type="password"
          v-model="user.password"
          placeholder="请输入密码"
          :rules="/^.{3,16}$/"
          msg="请输入3-16位的密码"
        >
        </myinput>
        <p class="tips">
          没有账号？
          <a href="#/register" class="">去注册</a>
        </p>
        <!-- mybutton点击事件监听 -->
        <!-- 传入自定义样式名 -->
        <mybutton @click="login" type="primary">登陆</mybutton>
        <!-- <van-button type="primary">主要按钮</van-button> -->
      </div>
    </div>
  </div>
</template>

<script>
// 引入封装的button组件
import mybutton from "@/components/mybutton";

// 引入封装的input框组件
import myinput from "@/components/myinput";

// 引入axios
import { login } from "@/api/user.js";

export default {
  data() {
    return {
      user: {
        username: "10086",
        password: "123",
      },
    };
  },
  components: {
    //   组件注册
    mybutton,
    myinput,
  },
  methods: {
    async login() {
      // login(this.user)
      //   .then((res) => {
      //     if (res.data.statusCode == 401) {
      //       this.$toast.fail(res.data.message);
      //     } else {
      //       this.$toast.fail("登录成功");
      //       // 跳转到个人中心
      //     }
      //   })
      //   .catch((err) => {
      //     console.log(err);
      //   });
      if (
        /^1\d{4}$|^1[35789]\d{9}$/.test(this.user.username) &&
        /^.{3,16}$/.test(this.user.password)
      ) {
        // await
        // 可以获取当前操作的返回结果
        // 可以让后续的操作等待，只是执行完当前使用await标记的方法后才会执行后续的操作
        // await必须处于async 函数中，async标记的函数就是await关键字所在的函数
        let res = await login(this.user);
        if (res.data.statusCode == 401) {
          this.$toast.fail(res.data.message);
        } else {
          this.$toast.fail("登录成功");
          // 将当前token存储到本地
          console.log(res);
          // localStorage.setItem("hm_toutiao_56", res.data.data.token);
          // 本地存储只能存储字符串，如果直接存储对象，就会默认调用对象的toString方法，从而存储了[object,Object]
          localStorage.setItem("hm_toutiao_56", JSON.stringify(res.data.data));
          // this.$router.push({
          //   name: "personal",
          //   params: { id: res.data.data.user.id },
          // });
          // this.$router.push({
          //   path: `/personal`,
          //   query: { id: res.data.data.user.id },
          // });
          //  console.log(window.location.hash);   #/login?redirect=%2FarticleDetail%2F1
          // console.log(window.location.hash.split("=")[1]);  %2FarticleDetail%2F1

          // url特殊字符转译方法
          let url = decodeURIComponent(window.location.hash.split("=")[1]);
          //console.log(url);  /articleDetail/1
          // 跳转到合适的页面
          if (url && url != "undefined") {
            this.$router.push({ path: url });
          } else {
            this.$router.push({ path: `/personal/${res.data.data.user.id}` });
          }
        }
      } else {
        this.$toast.fail("用户数据输入不合法");
      }
    },
  },
};
</script>

<style lang="less" scoped>
.container {
  padding: 20px;
}

.close {
  span {
    font-size: 27 / 360 * 100vw;
  }
}

.logo {
  display: flex;
  justify-content: center;

  span {
    display: block;
    font-size: 126 / 360 * 100vw;
    color: #d81e06;
  }
}

.inputs {
  input {
    margin-bottom: 20px;
  }
}

.tips {
  text-align: right;
  margin-bottom: 20px;

  a {
    color: #3385ff;
  }
}
</style>